Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 15 su 15
  1. #11
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Originariamente inviato da juventinodoc
    potresti postare o se preferisci,me la mandi in privato,la classe rdpb.
    No: non è questo il modo di condurre le discussioni nel forum. Non ci si intromette nelle discussioni degli altri per chiedere codice (già operazione non ammessa dal regolamento), che nulla ha a che vedere con il problema dell'utente che ha aperto la discussione.

    Usa i PVT per questo genere di comunicazioni con l'utente.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #12

    problema risolto..

    Salve ragazzi.. Ho risolto il problema.. In pratica non era un problema di impostazione dello Stream tokenizer ma di switch!! Grazie a tutti per avermi aiutato.. Vi posto di seguito la soluzione. PEr juventino doc: mi dispiace ma non ti manderò il rdpb, ho seguito quanto detto dal prof puoi farlo anche tu
    codice:
     
    public class AnalizzatoreLessicale {
    	private Simboli simb;
    	private StreamTokenizer streamTokenizer;
    
    	public AnalizzatoreLessicale(Reader r2) {
    		streamTokenizer = new StreamTokenizer(r2);
    		streamTokenizer.resetSyntax();
    		streamTokenizer.eolIsSignificant(true);
    		streamTokenizer.lowerCaseMode(false);
    		streamTokenizer.parseNumbers();
    		streamTokenizer.ordinaryChar('(');
    		streamTokenizer.ordinaryChar(')');
    		streamTokenizer.ordinaryChar('[');
    		streamTokenizer.ordinaryChar(']');
    		streamTokenizer.ordinaryChar('!');
    		streamTokenizer.ordinaryChar('=');
    		streamTokenizer.ordinaryChar('<');
    		streamTokenizer.ordinaryChar('>');
    		streamTokenizer.ordinaryChar('^');
    		streamTokenizer.ordinaryChar('*');
    		streamTokenizer.ordinaryChar('/');
    		streamTokenizer.ordinaryChar('%');
    		streamTokenizer.ordinaryChar('-');
    		streamTokenizer.ordinaryChar('+');
    		streamTokenizer.wordChars('a', 'z');
    		streamTokenizer.wordChars('A', 'Z');
    		streamTokenizer.whitespaceChars('\0', ' ');
    
    	}
    
    	public Simboli simboloSuccessivo() throws IOException {
    		switch (streamTokenizer.nextToken()) {
    		case StreamTokenizer.TT_EOF:
    			simb = Simboli.EOF;
    			break;
    		case StreamTokenizer.TT_NUMBER:
    			simb = Simboli.NUM;
    			break;
    		case StreamTokenizer.TT_WORD:
    			String s = streamTokenizer.sval;
    			if (s.equals("and"))
    				simb = Simboli.AND;
    			else if (s.equals("or"))
    				simb = Simboli.OR;
    			else if (s.equals("not"))
    				simb = Simboli.NOT;
    			else
    				simb = Simboli.ID;
    			break;
    
    		case '(':
    			simb = Simboli.OPAR;
    			break;
    		case ')':
    			simb = Simboli.CPAR;
    			break;
    		case '[':
    			simb = Simboli.OPAR1;
    			break;
    		case ']':
    			simb = Simboli.CPAR1;
    			break;
    		case '=':
    			if (streamTokenizer.nextToken() != '=')
    				System.out.println("Invalid character =. Expected ==");
    			simb = Simboli.EQ;
    			break;
    		case '!':
    			if (streamTokenizer.nextToken() != '=') {
    				streamTokenizer.pushBack();
    				simb = Simboli.NOT;
    			} else
    				simb = Simboli.NEQ;
    			break;
    		case '>':
    			if (streamTokenizer.nextToken() != '=') {
    				streamTokenizer.pushBack();
    				simb = Simboli.GT;
    			} else
    				simb = Simboli.GE;
    			break;
    		case '<':
    			if (streamTokenizer.nextToken() != '=') {
    				streamTokenizer.pushBack();
    				simb = Simboli.LT;
    			} else
    				simb = Simboli.LE;
    			break;
    		case '^':
    			simb = Simboli.POWER;
    			break;
    		case '/':
    			simb = Simboli.DIV;
    			break;
    		case '%':
    			simb = Simboli.REM;
    			break;
    		case '*':
    			simb = Simboli.MULT;
    			break;
    		case '-':
    			simb = Simboli.MINUS;
    			break;
    		case '+':
    			simb = Simboli.PLUS;
    			break;
    		case '&':
    			if (streamTokenizer.nextToken() != '&')
    				System.out.println("Invalid character &. Expected &&");
    			simb = Simboli.AND;
    			break;
    		case '|':
    			if (streamTokenizer.nextToken() != '|')
    				System.out.println("Invalid character |. Expected ||");
    			simb = Simboli.OR;
    			break;
    		/*default:
    			System.out.println("Unexpected character: "
    					+ (char) streamTokenizer.ttype);*/
    		}
    		return simb;
    	}
    
    	/*
    	 * Caller must ensure to call nextToken() at least one time before calling
    	 * this function.
    	 */
    	public Simboli lastToken() {
    		assert streamTokenizer.ttype != -4;
    		return simb;
    	}
    
    	/*
    	 * Caller must ensure the last token is TOKEN_ID.
    	 */
    	public String getVariabile() {
    		return streamTokenizer.sval;
    	}
    
    	/*
    	 * Caller must ensure the last token is TOKEN_NUM.
    	 */
    	public int getNum() {
    		return (int) streamTokenizer.nval;
    	}
    }
    alla prossima...
    Maria

  3. #13
    x maria:
    grazie,alla fine sono riuscito a farla la classe rdpb
    Ora sono impallato con l'uso del pattern interpreter,mi puoi dare qualche suggerimento

  4. #14
    il pattern interpreter io lo utilizzato con stream tokenizer.. Cioè il cod che ho postato con cui ho fatto l'analizzatore lessicale.. E poi ho fatto il parser utilizzando rdbp
    Maria

  5. #15
    ma poi non va fatto un valutatore dell'espressione?
    usi il pattern visitor?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.