Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Compilatore

  1. #1

    Compilatore

    Salve a tutti
    Ho il compiler del linguaggio pawno, dato che sto creando un editor per questo linguaggio
    Come posso eseguire questo compiler scriverci il file che deve compilare e dopo gettare ( tipo su un label ) il risultato del compiler ?
    Uso Visual basic 2010 express

  2. #2
    Scusa il doppio posto comunque ho un problema
    Ho creato un elemento 'OpenFileDialog' seleziono il file e premo 'avvia' e si blocca rimane li e niente
    Il codice è questo
    Codice PHP:
                Dim sreLeggi As New StreamReader(OpenFileDialog1.FileName)

                
    'variabile di appoggio di lettura

                Dim strTesto As String

                Do

                    '
    leggo il testo

                    strTesto 
    sreLeggi.ReadLine()

                    
    'visualizzo il testo

                    scriptbox.Text += strTesto

                Loop Until strTesto Is Nothing

                '
    chiudo l'oggetto di lettura

                sreLeggi.Close() 
    Sto esempio lo preso da un sito , perchè credevo che era il mio codice a buggare..

  3. #3
    Innanzitutto hai infranto la regola non scritta della correttezza formale linguistica: in parole povere non si capisce niente dal primo post..

    Tuttavia, essendo da anni abituato ad interpretare espressioni sgrammaticate e ben altro, ho capito che vuoi creare una sorta di IDE, appoggiandoti ad un compilatore esterno.

    Non capisco però cosa significa:
    gettare ( tipo su un label ) il risultato del compiler ?
    In ogni caso in genere si crea un file, il cui indirizzo viene passato al compilatore insieme ad altri comandi: non esiste una regola generale, per cui per vedere quali parametri devono essere passati guarda la documentazione del tuo compiler (cioè la compilazione da riga di comando).

    Il 2° post contiene lo hai scritto in maniera corretta: esempio di codice e problema associato al codice.

    Guarda qui:
    http://dotnetperls.com/streamreader-vbnet
    http://www.startvbdotnet.com/files/default.aspx
    http://msdn.microsoft.com/it-it/libr...0d(VS.80).aspx

    della serie: chi cerca trova..

  4. #4
    Mi sono passato 5012 guide per quel problema ma non sono riuscito a trovare.
    Comunque per il primo post, già so i comandi da inviare al compilatore mi serve solo come inserirli dal programma.

  5. #5
    Quando avvii il processo del compilatore (tramite Process.Start) devi redirigere il suo standard output (impostando a true il campo RedirectStandardOutput della struttura ProcessStartInfo che passi a Process.Start e disabilitando UseShellExecute); una volta avviato il processo, potrai usare il membro StandardOutput dell'oggetto Process restituito da Process.Start per ottenere uno stream da cui leggere l'output del compilatore.

    Esempio:
    codice:
    Dim Output As String
    Dim psi As New System.Diagnostics.ProcessStartInfo("percorsodelcompilatore.exe","argomentidellalineadicomando");
    psi.UseShellExecute = False;
    psi.ErrorDialog = False;
    psi.CreateNoWindow = True;
    psi.RedirectStandardOutput = True;
    Try
        Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi);
        Dim sr As System.IO.StreamReader = p.StandardOutput;
        Output = sr.ReadToEnd();
        sr.Close();
    Catch ' eccetera, qui gestisci gli eventuali errori
    
    End Try
    ' Nella stringa Output ora hai l'output del compilatore
    ... gettare ( tipo su un label ) il risultato del compiler ... credevo che era il mio codice a buggare ...
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Si scusa ma ho scritto in fretta .
    Comunque grazie ora provo

  7. #7
    codice:
            Dim Output As String
            Dim psi As New System.Diagnostics.ProcessStartInfo("pawncc.exe", "pawncc prova.pwn")
            psi.UseShellExecute = False
            psi.ErrorDialog = False
            psi.CreateNoWindow = True
            psi.RedirectStandardOutput = True
    
            Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi)
            Dim sr As System.IO.StreamReader = p.StandardOutput
            Output = sr.ReadToEnd()
            sr.Close()
    
    
            RichTextBox2.Text = Output
    Ho modificato cosi ma mi dice
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    1 Error.
    (Da 1 Error. ma non dice che errore è, non crea neanche il file .amx)
    Mentre il compiler sul programma pawno non da errori
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
    Avrò sbagliato qualcosa io valori da inviare al compiler ?
    Ho letto da qua http://pawnscript.googlecode.com/svn.../pawn-lang.pdf gli input da mettere ( se non metto nessun valore, cioe non metto pawncc --) mi da
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

    Usage: pawncc <filename> [filename...] [options]

    Options:
    -A<num> alignment in bytes of the data segment and the stack
    -a output assembler code
    -C[+/-] compact encoding for output file (default=+)
    -c<name> codepage name or number; e.g. 1252 for Windows Latin-1
    -Dpath active directory path
    -d<num> debugging level (default=-d1)
    0 no symbolic information, no run-time checks
    1 run-time checks, no symbolic information
    2 full debug information and dynamic checking
    3 same as -d2, but implies -O0
    -e<name> set name of error file (quiet compile)
    -H<hwnd> window handle to send a notification message on finish
    -i<name> path for include files
    -l create list file (preprocess only)
    -o<name> set base name of (P-code) output file
    -O<num> optimization level (default=-O1)
    0 no optimization
    1 JIT-compatible optimizations only
    2 full optimizations
    -p<name> set name of "prefix" file
    -r[name] write cross reference report to console or to specified file
    -S<num> stack/heap size in cells (default=4096)
    -s<num> skip lines from the input file
    -t<num> TAB indent size (in character positions, default=8)
    -v<num> verbosity level; 0=quiet, 1=normal, 2=verbose (default=1)
    -w<num> disable a specific warning by its number
    -X<num> abstract machine size limit in bytes
    -XD<num> abstract machine data/stack size limit in bytes
    -\ use '\' for escape characters
    -^ use '^' for escape characters
    -;[+/-] require a semicolon to end each statement (default=-)
    -([+/-] require parantheses for function invocation (default=-)
    sym=val define constant "sym" with value "val"
    sym= define constant "sym" with value 0

    Options may start with a dash or a slash; the options "-d0" and "/d0" are
    equivalent.

    Options with a value may optionally separate the value from the option letter
    with a colon (":") or an equal sign ("="). That is, the options "-d0", "-d=0"
    and "-d:0" are all equivalent.

  8. #8
    codice:
            Dim psi As New System.Diagnostics.ProcessStartInfo("pawncc.exe", "pawncc prova.pwn")
    Secondo me l'errore è nel secondo parametro, non devi specificare anche lì pawncc.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.